package org.kairosdb.core.health; import org.hamcrest.CoreMatchers; import org.junit.Before; import org.junit.Test; import org.kairosdb.core.datastore.Datastore; import org.kairosdb.core.exception.DatastoreException; import java.util.Collections; import static com.codahale.metrics.health.HealthCheck.Result; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.*; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class DatastoreQueryHealthCheckTest { private Datastore datastore; private DatastoreQueryHealthCheck healthCheck; @Before public void setup() throws DatastoreException { datastore = mock(Datastore.class); when(datastore.getMetricNames()).thenReturn(Collections.<String>emptyList()); healthCheck = new DatastoreQueryHealthCheck(datastore); } @Test(expected = NullPointerException.class) public void testConstructorNullDatastoreInvalid() { new DatastoreQueryHealthCheck(null); } @Test public void testCheckHealthy() throws Exception { Result result = healthCheck.check(); assertTrue(result.isHealthy()); } @Test public void testCheckUnHealthy() throws Exception { Exception exception = new DatastoreException("Error message"); when(datastore.getMetricNames()).thenThrow(exception); Result result = healthCheck.check(); assertFalse(result.isHealthy()); assertThat(result.getError(), CoreMatchers.<Throwable>equalTo(exception)); assertThat(result.getMessage(), equalTo(exception.getMessage())); } @Test public void testGetName() { assertThat(healthCheck.getName(), equalTo(DatastoreQueryHealthCheck.NAME)); } }